import {defineStore} from 'pinia';
import {ref} from 'vue';

// 定义用户信息类型
type UserInfo = {
    [key: string]: any; // 可根据实际情况调整具体类型
};

export const useUserStore = defineStore('user', () => {
    // 使用 ref 定义 userInfo 状态，初始化时尝试从 localStorage 读取数据
    const userInfo = ref<UserInfo | null>(() => {
        const storedData = localStorage.getItem('userInfo');
        if (storedData) {
            try {
                return JSON.parse(storedData);
            } catch (error) {
                console.error('解析 localStorage 中的用户信息时出错:', error);
            }
        }
        return null;
    });

    // 设置用户信息并存储到 localStorage
    const setUser = (info: UserInfo | null) => {
        try {
            userInfo.value = info;
            localStorage.setItem('userInfo', JSON.stringify(info));
        } catch (error) {
            console.error('存储用户信息到 localStorage 时出错:', error);
        }
    };

    // 清除用户信息并从 localStorage 移除
    const clearUser = () => {
        try {
            userInfo.value = null;
            localStorage.removeItem('userInfo');
        } catch (error) {
            console.error('从 localStorage 移除用户信息时出错:', error);
        }
    };

    return {
        userInfo,
        setUser,
        clearUser
    };
});